Media distribution systems distribute media content, such as audio data or video data, from an origin server to one or more clients via a data communication network. The data communication network may include, for example, a local area network (LAN) or a wide area network (WAN). The origin server is the source of the media content, including both live media content and pre-recorded media content. A particular type of media distribution system, referred to as a streaming media system, distributes real-time data from an origin server to one or more clients requesting the real-time data. Increased bandwidth through the data communication network improves the audio or video quality of the distributed media in the case of real-time data. If one or more low bandwidth communication links exist in the network connecting the origin server to the client, then the quality of the real-time media presentation is reduced. In this situation, the client may attempt to retrieve the media from a different server, referred to as a cache server or a proxy server, which is connected to the client using higher bandwidth communication links. The cache or proxy server retrieves the content from the origin server and distributes the content to one or more clients via a faster communication link.
FIG. 1 illustrates an environment 100 in which a client can request and receive content (such as streaming video content) from a cache server and/or an origin server. A client 102 is coupled to a network 104, such as the Internet, via a communication link 114. A cache server 106 is coupled to client 102 via a communication link 112 and coupled to network 104 via a communication link 118. Cache server 106 includes a storage disk 108 for storing data, such as cached media content for distribution to client 102. An origin server 110 is coupled to network 104 via a communication link 116.
Typically, the communication links to network 104 (i.e., communication links 114, 116, and 118) are relatively slow connections (e.g., 64 k bits per second) and provide low quality real-time video images. In contrast, communication link 112 between client 102 and cache server 106 is generally a faster connection (e.g., 100M bits per second) provided by a LAN or other high-speed network.
When client 102 wants to receive media content, a request is issued to cache server 106. If the cache server 106 has cached a copy of the requested media content, then the cache server transmits the content across communication link 112 to client 102.
Cache server 106 receives its stored media content from one or more origin servers 110. Typically, cache server 106 downloads content from origin server 110 at a relatively low speed. However, once the content is downloaded, the cache server 106 can distribute the content to many local clients via a high-speed network connection, such as communication link 112. The cache server 106 may save the downloaded content to serve future client requests for the content without having to download the content from the origin server 110. If cache server 106 does not contain the content requested by the client 102, then the client must retrieve the desired content from the origin server 110.
Existing cache servers are manufactured with a substantially fixed architecture that is difficult to customize. A particular manufacturer may provide several different cache server models with different features, but the architecture of each model provides minimal opportunity for customization. A cache server customer is forced to select a cache server model that is “closest” to their cache requirements. Since different cache users are likely to have different cache requirements, no single cache server can satisfy the needs of all users. Depending on the cache server features and the customer's requirements, the cache server may not be capable of meeting all of the customer's cache requirements. These existing cache servers perform various cache-related functions that are controlled by a set of cache policies that are determined by the manufacturer. These existing cache servers that define both the cache-related functions and the policies for implementing those functions minimize the opportunities for a customer to modify the cache server to meet their specific needs.
The system described herein addresses these limitations by providing a single cache server that can operate as either an origin server or a cache server. The system includes a flexible architecture that separates the various cache functions from the policies that determine which functions are to be performed in a particular situation. This flexible architecture allows a common cache server to be configured in a variety of different ways depending on the set of policies applied to the cache server. Thus, different manufacturers or end users can create different cache server functionality based on the set of policies selected.